home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / x / text.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  2KB  |  111 lines

  1. /* WIDE AREA INFORMATION SERVER SOFTWARE:
  2.    No guarantees or restrictions.  See the readme file for the full standard
  3.    disclaimer.
  4.  
  5.    This is part of the X user-interface for the WAIS software.  Do with it
  6.    as you please.
  7.  
  8.    jonathan@Think.COM
  9.  
  10.  *
  11.  * $Log:    qcommands.c,v $
  12.  */
  13.  
  14. #include "xwais.h"
  15.  
  16. TextList
  17. NewText()
  18. {
  19.   TextList result;
  20.  
  21.   if(NULL != (result = (TextList) s_malloc(sizeof(_TextList)))) {
  22.     if(NULL == (result->thisText = (Textbuff) s_malloc(sizeof(_Textbuff)))) {
  23.       s_free(result);
  24.       result = NULL;
  25.     }
  26.     else {
  27.       result->thisText->shell = NULL;
  28.       result->thisText->textwindow = NULL;
  29.       result->thisText->status = NULL;
  30.       result->thisText->docid = NULL;
  31.       result->thisText->text = NULL;
  32.       result->thisText->type = NULL;
  33.       result->thisText->size = 0;
  34.       result->nextText = allText;
  35.       allText = result;
  36.     }
  37.   }
  38.   return(result);
  39. }
  40.  
  41. void
  42. KillText(t)
  43. Textbuff t;
  44. {
  45.   TextList a_tList, tmp;
  46.  
  47.   if(t != NULL) {
  48.     if(t->shell != NULL) XtDestroyWidget(t->shell);
  49.     if(t->text != NULL) s_free(t->text);
  50.     if(t->type != NULL) s_free(t->type);
  51.     for(a_tList = allText; a_tList != NULL; a_tList = a_tList->nextText)
  52.       if(a_tList->thisText == t) {
  53.     if(a_tList->nextText != NULL) {
  54.       a_tList->thisText = a_tList->nextText->thisText;
  55.       tmp = a_tList->nextText;
  56.       a_tList->nextText = a_tList->nextText->nextText;
  57.       s_free(tmp);
  58.     }
  59.     else {
  60.       a_tList->thisText = NULL;
  61.       if(a_tList == allText) {
  62.         s_free(a_tList);
  63.         allText = NULL;
  64.       }
  65.     }
  66.     break;
  67.       }
  68.     s_free(t);
  69.   }
  70. }
  71.  
  72. Textbuff
  73. findText(w)
  74. Widget w;
  75. {
  76.   TextList a_tList;
  77.   static Widget shell = NULL;
  78.  
  79.   if (w != NULL) 
  80.     if((shell = XtParent(w)) != NULL)
  81.       shell = XtParent(shell);
  82.   if (shell != NULL) {
  83.     for(a_tList = allText; a_tList != NULL; a_tList = a_tList->nextText)
  84.       if(a_tList->thisText->shell != NULL)
  85.       if (a_tList->thisText->shell == shell)
  86.         return a_tList->thisText;
  87.   }
  88.   return NULL;
  89. }
  90.  
  91. Textbuff
  92. findTextDoc(doc, type)
  93. DocumentID doc;
  94. char *type;
  95. {
  96.   TextList a_tList;
  97.  
  98.   if (doc != NULL) { 
  99.     for(a_tList = allText; a_tList != NULL; a_tList = a_tList->nextText)
  100.       if(a_tList->thisText != NULL &&
  101.      a_tList->thisText->docid == doc) {
  102.     if(a_tList->thisText->type != NULL &&
  103.        type != NULL  &&
  104.        !strcmp(a_tList->thisText->type, type))
  105.       return (a_tList->thisText);
  106.       }
  107.   }
  108.   return NULL;
  109. }
  110.  
  111.